import axios from 'axios'
// import QS from 'qs'

import { Loading, Message } from 'element-ui' // 按需引入
import { API_TYPE } from '@/utils/constants.js'

// 请求与loading超时时间，暂定10秒
const timeout = 3000
window['user-router-loading'] = false
// console.log(process.env.NODE_ENV)
console.log(process)
const service = axios.create({
  baseURL: process.env.VUE_APP_HTTP_COMMON,
  // baseURL: 'https://api.apiopen.top',
  timeout
})
console.log(process)
// 环境的切换--开发环境、测试环境和生产环境
// if (process.env.NODE_ENV == 'development') {
//   axios.defaults.baseURL = 'https://www.baidu.com';}
// else if (process.env.NODE_ENV == 'debug') {
//   axios.defaults.baseURL = 'https://www.ceshi.com';
// }
// else if (process.env.NODE_ENV == 'production') {
//   axios.defaults.baseURL = 'https://www.production.com';
// }

// 全局loading声明
let loadingInstance
// 局部loading声明
let partLoading
/**
 * 根据设置的api类型，更改url
 * @param {Object} config axois配置
 */
const setUrl = function (config) {
  console.log(config)
  console.log(API_TYPE)
  console.log(process)
  switch (config.api) {
    case API_TYPE.inp:
      config.url = process.env.VUE_APP_HTTP_INP + config.url
      break
    case API_TYPE.phs:
      config.url = process.env.VUE_APP_HTTP_PHS + config.url
      break
    case API_TYPE.user:
      config.url = process.env.VUE_APP_HTTP_USER + config.url
      break
    case API_TYPE.auth:
      config.url = process.env.VUE_APP_HTTP_AUTH + config.url
      break
    case API_TYPE.oss:
      config.url = process.env.VUE_APP_HTTP_OSS + config.url
      break
    default:
      // config.url = process.env.VUE_APP_HTTP_COMMON
      config.url = 'https://api.apiopen.top/musicBroadcastingDetails'
      break
  }
}

// 添加请求拦截器--请求之前做些什么
service.interceptors.request.use(async (config) => {
  console.log(config)
  // 判定请求的api系统
  setUrl(config)

  // 判定是否剔除空格，默认剔除data中所有属性的首尾空格
  // if (config.trim !== false) {
  //   REMOVE_BLANKS(config.data)
  // }
  // console.log('service.interceptors.request:', config, config.data)
  // 判定是否启用全局loading
  if (config.loading !== false) {
    loadingInstance = Loading.service({
      lock: true,
      text: '数据加载中...',
      spinner: 'my-el-custom-spinner',
      background: 'rgba(0,0,0,.1)',
      target: document.querySelector('.loading-area')
    })
    // 长时间请求未成功则自动关闭
    setTimeout(() => loadingInstance.close(), timeout)
  } else {
    let loadingArea = document.querySelector('.loading-area')
    // 如果页面中设置了局部loading
    if (loadingArea) {
      partLoading = Loading.service({
        lock: true,
        text: '数据加载中...',
        // text: 'Loading',
        // spinner: 'el-icon-loading',
        spinner: 'my-el-custom-spinner',
        background: 'rgba(0,0,0,.1)',
        target: document.querySelector('.loading-area')
      })
      // 长时间请求未成功则自动关闭
      setTimeout(() => partLoading.close(), timeout)
    }
  }
  // debugger
  // 在发送请求之前做些什么 配置token
  // if (store.getters.token) {
  //   config.headers['Token'] = store.getters.token
  // }
  // let info
  // await PC_INFO(i => (info = i), true)
  // // 配置PCid md5值
  // if (info) {
  //   config.headers['PCid'] = info.md5
  // }
  // config.paramsSerializer = function (params) {
  //   return qs.stringify(params, {
  //     indices: false
  //   })
  // }
  return config
}, function (error) {
  Message.error('请求超时,请检查网络或联系管理员!')
  // 对请求错误做些什么
  return Promise.reject(error)
})

export default service
